﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BL;
using System.Web.Security;

namespace SFsoftSite.Cadastros
{
    public partial class CadastroProdutora : System.Web.UI.Page
    {
        #region Atributos

        BLProdutora _produtora;

        #endregion

        #region Page Load

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Roles.IsUserInRole("Admin"))
                Response.Redirect("~/Login.aspx");

            if (!IsPostBack)
            {
                AtualizaGrid();
            }
        }

        #endregion

        #region Eventos

        protected void btnCadastrar_Click(object sender, EventArgs e)
        {
            _produtora = new BLProdutora();

            try
            {
                _produtora.InsertProdutora(txtNomeProdutora.Text);
  
            }
            catch 
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mensagem", "alert('Não foi possível cadastrar Produtora. Por favor verifique os dados.')", true);
            }
           
            AtualizaGrid();
        }

        protected void EditRecord(object sender, GridViewEditEventArgs e)
        {

            GridView1.EditIndex = e.NewEditIndex;
            AtualizaGrid();

        }

        protected void CancelRecord(object sender, GridViewCancelEditEventArgs e)
        {

            GridView1.EditIndex = -1;
            AtualizaGrid();

        }

        protected void UpdateRecord(object sender, GridViewUpdateEventArgs e)
        {

            GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];

            int id = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());

            TextBox tnome = (TextBox)row.FindControl("txtProdutora");

            _produtora = new BLProdutora();

            try
            {
                _produtora.UpdateProdutora(id, tnome.Text);

                GridView1.EditIndex = -1;

                AtualizaGrid();
            }
            catch 
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mensagem", "alert('Não foi possível atualizar os dados. Por favor verifique-os.')", true);
            }
           

           
        }

        protected void DeleteRecord(object sender, GridViewDeleteEventArgs e)
        {
            string id = GridView1.DataKeys[e.RowIndex].Value.ToString();

            _produtora = new BLProdutora();

            if (_produtora.DeleteProdutora(Convert.ToInt32(id)))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mensagem", "alert('O registro foi deletado com sucesso!')", true);
                
            }
            else
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mensagem", "alert('Não foi possível deletar a produtora pois existem jogos atrelados à ela!')", true);
            }

            AtualizaGrid();
        }


        #endregion

        #region Métodos

        private void AtualizaGrid()
        {
            _produtora = new BLProdutora();
            GridView1.DataSource = _produtora.GetProdutoras();
            GridView1.DataBind();
        }

        #endregion
    }
}